Vx86: x86 Assembler Simulated in C Powered by Automated Theorem Proving
نویسندگان
چکیده
Vx86 is the first static analyzer for sequential Intel x86 assembler code using automated deductive verification. It proves the correctness of assembler code against function contracts, which are expressed in terms of pre-, post-, and frame conditions using first-order predicates. Vx86 takes the annotated assembler code, translates it into C code simulating the processor, and then uses an existing C verifier to either prove the correctness of the assembler program or find errors in it. First experiments on applying Vx86 on the Windows Hypervisor code base are encouraging. Vx86 verified the Windows Hypervisor’s memory safety, arithmetic safety, call safety and interrupt safety.
منابع مشابه
Verification of Hypervisor Subroutines written in Assembler
We present a methodology for the specification and verification of functional specifications of programs written in Assembler. We have evaluated the methodology in an industrial setting, the verification of the Microsoft Hypervisor. Many industrial software projects are written in a high-level language like C. For performance reasons or for direct hardware access, some of the routines are imple...
متن کاملDetermination of Material Flows in a Multi-echelon Assembly Supply Chain
This study aims to minimize the total cost of a four-echelon supply chain including suppliers, an assembler, distributers, and retailers. The total cost consists of purchasing raw materials from the suppliers by the assembler, assembling the final product, materials transportation from the suppliers to the assembler, product transportation from the assembler to the distributors, product transpo...
متن کاملFormal Device and Programming Model for a Serial Interface
The verification of device drivers is essential for the pervasive verification of an operating system. To show the correctness of device drivers, devices have to be formally modeled. In this paper we present the formal model of the serial interface controller UART 16550A. By combining the device model with a formal model of a processor instruction set architecture we obtain an assembler-level p...
متن کاملBit-Blasting ACL2 Theorems
Interactive theorem proving requires a lot of human guidance. Proving a property involves (1) figuring out why it holds, then (2) coaxing the theorem prover into believing it. Both steps can take a long time. We explain how to use GL, a framework for proving finite ACL2 theorems with BDDor SAT-based reasoning. This approach makes it unnecessary to deeply understand why a property is true, and a...
متن کاملUse of Formal Verification at Centaur Technology
We have developed a formal-methods-based hardware verification toolflow to help ensure the correctness of our X86-compatible microprocessors. Our toolflow uses the ACL2 theorem-proving system as a design database and a verification engine. We verify Verilog designs by first translating them into a formally defined hardware description language, and then using a variety of automated verification...
متن کامل